/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2013/03/03
* File: RenderObject.h
* Blog: http://www.cnblogs.com/zengqh/
**/

#pragma once

#include "RenderDef.h"

namespace HY
{
class RenderSystem;

class RenderObject : public Flags, public Noncopyable
{
	friend class RenderSystem;
public:
	enum 
	{
		TypeIndexBuffer                  =  0,	
		TypeVertexBuffer                 =  1,	
		TypeTexture2D                    =  2,	
		TypeTextureCube                  =  3,
		TypeRenderTarget2D				 =	4,
		TypeRenderTargetCube			 =  5,
		TypeVertexShader                 =  6,	
		TypePixelShader                  =  7,	
		TypeProgram                      =  8
	};

public:
	virtual ~RenderObject()
	{

	}
	

	uint32 getType() const
	{
		return type_;
	}

	virtual void release() = 0;

protected:
	RenderObject(uint32 type) : type_(type)
	{

	}

protected:
	uint32				type_;
};

}